iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 16
0
Data Technology

Microsoft R Solution系列 第 16

Day16 - MSSQL R Service Part4 資料類型和資料物件

  • 分享至 

  • xImage
  •  

先來看一定會遇到的雷, 就是WHERE條件的單引號如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333Pg3gd5wQ1X.png

一般來說WHERE條件遇到varchar是用單引號包起來, 但是由於外面已經有一組單引號, 所以語法會判斷錯誤, 解決方式就是用兩個單引號, 修改程式碼如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333ygk2LVDhZs.png

另外在R裡, 物件類型有分 vector, matrix與list, 而如之前所說, R Service回傳資料到MSSQL時是吐出data frame的, 接下用vector當作範例, 來看一下, 一樣都是hello world但結果大不相同, 範例程式碼如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333dUASsAsinO.png

眼尖的人, 是否看出差別了呢? Part1用了一個myvariable去接一個vector, 然後data frame把這個變數傳出來, 變成了一個欄位但是有三筆資料, 但是Part2 直接用data frame直接把這個vector傳出來, 所以是一筆資料但是有三個欄位, 我們還可以用str()來看一下傳出來的資料結構, 修改一下Part1程式碼如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333wPqQT2mYjQ.png

在Messages清楚看到一個變數三個物件, 再來修改一下Part2的程式碼如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333c0NEMzuY6j.png

在Part2裡, Messages顯示的是一個物件三個變數, 由此可知在R裡, 程式碼只有些許不同, 但結果大相逕庭啊, 在操作上不可不甚!

接下來複習高中的矩陣運算, 將程式碼修改如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333JRHL5Yp3qa.png

由上圖可知, 從MSSQL傳進去2個row的資料會被視為2X1的矩陣, 指派給x, 而y被指派的一維陣列,視為1x4的矩陣, 所以高中數學有教 [ 2X1] * [1X4]=[2X4], 符合上述結果, 但是我們將x % * % y以y % * % x取代則會出現底下錯誤, 因[1X4] * [ 2X1], 不符合矩陣運算規則, 所以會報錯如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333KmHnQFiM3b.png

但是若修改如下, 即MSSQL傳進去4個row的資料, 就變成 [1X4] * [4 * 1]=[1X1]
https://ithelp.ithome.com.tw/upload/images/20180103/20103333bhdoGjfxyF.png

沒想到高中數學在此派上用場啦!/images/emoticon/emoticon34.gif

另外在MSSQL Table的欄位資料型態不盡然都能傳入R Service裡, Microsoft官方文件提到的限制如下
https://ithelp.ithome.com.tw/upload/images/20180103/20103333FXzMj3Bkuo.png

如果有遇到, 就用Cast做轉型處理, 以上就是一些會遇到的坑, 提供參考

本文參考
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql
https://docs.microsoft.com/en-us/sql/advanced-analytics/tutorials/rtsql-r-and-sql-data-types-and-data-objects


上一篇
Day15 - MSSQL R Service Part3 與MSSQL Table互動
下一篇
Day17 - MSSQL R Service Part5 建立模型與儲存至MSSQL Table
系列文
Microsoft R Solution30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言